www.gusucode.com > VC 自编SQL数据库(服务端+客户端) > VC 自编SQL数据库(服务端+客户端)/code/www.NewXing.com/sql/Client/FileBar.cpp
// FileBar.cpp : implementation file ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Client.h" #include "FileBar.h" #include "Resource.h" //#include "table.h" //#include "MSLDoc.h" #include "ClientDoc.h" #include "Msg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern CClientApp theApp; ///////////////////////////////////////////////////////////////////////////// // CFileBar CFileBar::CFileBar() { } CFileBar::~CFileBar() { } #define IDC_TREE_CTRL 1000 BEGIN_MESSAGE_MAP(CFileBar, CControlBar) //{{AFX_MSG_MAP(CFileBar) ON_NOTIFY_REFLECT(TVN_ITEMEXPANDING, OnItemexpanding) ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged) ON_WM_CREATE() ON_WM_WINDOWPOSCHANGED() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFileBar message handlers int CFileBar::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CControlBar::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here if( !m_TreeCtrl.Create(WS_CHILD | WS_VISIBLE | WS_THICKFRAME | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT, CRect(0,0,0,0), this ,IDC_TREE_CTRL) ) { TRACE0("Failed to create view for CFileBar\n"); return -1; } //////////////////////////////////////////////////////////////// m_TreeCtrl.SetMenuID(IDR_POPUP); m_TreeCtrl.ModifyStyleEx(0, WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE); m_ImageList.Create (IDB_IMAGE_FILE, 16, 1, RGB(0,255,0)); m_TreeCtrl.SetImageList (&m_ImageList, TVSIL_NORMAL); //Construct the trees____ hitem0 = m_TreeCtrl.InsertItem( "MiniSQL关系库", 3, 3 ); m_TreeCtrl.SetItemState( hitem0, TVIS_BOLD, TVIS_BOLD ); return 0; } void CFileBar::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) { CCJControlBar::OnWindowPosChanged(lpwndpos); // TODO: Add your message handler code here if (IsFloating()) { m_TreeCtrl.MoveWindow( 5, 5, lpwndpos->cx-10, lpwndpos->cy-10 ); } else if (IsHorzDocked()) { m_TreeCtrl.MoveWindow( 17, 3, lpwndpos->cx-25, lpwndpos->cy-17 ); } else { m_TreeCtrl.MoveWindow( 3, 17, lpwndpos->cx-17, lpwndpos->cy-30 ); } } BOOL CFileBar::add_item( CString& tname ) { int flag=0; POSITION pos = item_list.GetHeadPosition(); while( pos ) { if( item_list.GetNext( pos ) == tname ) { flag = 1; break; } } if(flag) return FALSE; else { item_list.AddTail( tname ); return TRUE; } } void CFileBar::insert_tree( CString& tname, HTREEITEM hitem) { if( add_item( tname ) ) m_TreeCtrl.InsertItem( tname, 4, 4, hitem, TVI_LAST ); } void CFileBar::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0; } void CFileBar::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0; } void CFileBar::ExpandTree() { m_TreeCtrl.Expand (hitem0, TVE_EXPAND); } void CFileBar::ViewDb() { HTREEITEM hItem = m_TreeCtrl.GetSelectedItem(); CString name = m_TreeCtrl.GetItemText( hItem ); CString cmd( "select * from " ); cmd += name + ";"; CMsg msg( COMMAND ); msg.m_msgList.AddTail( cmd ); theApp.SendMsg( msg ); CClientDoc* pDoc = NULL; theApp.m_ClientDocList.AddTail( pDoc ); } void CFileBar::DelFile(const CString &fname) { POSITION pos = item_list.GetHeadPosition(); POSITION old; bool flag = false; while( pos ) { old = pos; CString temp = item_list.GetNext( pos ); if( temp == fname ) { item_list.RemoveAt( old ); flag = true; break; } } if( !flag ) return ; HTREEITEM hItem; hItem = m_TreeCtrl.GetNextItem( hitem0, TVGN_CHILD ); if( hItem ) { if( m_TreeCtrl.GetItemText( hItem ) == fname ) { m_TreeCtrl.DeleteItem( hItem ); return ; } while( hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_NEXT ) ) if( m_TreeCtrl.GetItemText( hItem ) == fname ) { m_TreeCtrl.DeleteItem( hItem ); return ; } } } void CFileBar::Expanding() { HTREEITEM hItem = m_TreeCtrl.GetSelectedItem(); if( m_TreeCtrl.ItemHasChildren( hItem ) ) return ; CString tname = m_TreeCtrl.GetItemText( hItem ); theApp.m_treeList.AddTail( hItem ); CMsg msg( FILEBAR_EXPAND ); msg.m_msgList.AddTail( tname ); theApp.SendMsg( msg ); } void CFileBar::InsertAttr( CString& attr, HTREEITEM hItem ) { m_TreeCtrl.InsertItem( attr, 5, 5, hItem, TVI_LAST ); } void CFileBar::InsertIndex( CString& index, HTREEITEM hItem ) { m_TreeCtrl.InsertItem( index, 6, 6, hItem, TVI_LAST ); } void CFileBar::InsertIndex( LPCTSTR tname, LPCTSTR iname ) { HTREEITEM hItem; hItem = m_TreeCtrl.GetNextItem( hitem0, TVGN_CHILD ); if( hItem ) { if( m_TreeCtrl.GetItemText( hItem ) == tname ) ; else while( hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_NEXT ) ) if( m_TreeCtrl.GetItemText( hItem ) == tname ) break; } if( m_TreeCtrl.ItemHasChildren( hItem ) ) { CString str( _T("index:") ); str += iname; m_TreeCtrl.InsertItem( str, 6, 6, hItem, TVI_LAST ); } } void CFileBar::DropIndex( LPCTSTR tname, LPCTSTR iname ) { HTREEITEM hItem; hItem = m_TreeCtrl.GetNextItem( hitem0, TVGN_CHILD ); if( hItem ) { if( m_TreeCtrl.GetItemText( hItem ) == tname ) ; else while( hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_NEXT ) ) if( m_TreeCtrl.GetItemText( hItem ) == tname ) break; } CString text( _T("index:") ); text += iname; if( m_TreeCtrl.ItemHasChildren( hItem ) ) { hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_CHILD ); if( m_TreeCtrl.GetItemText( hItem ) == text ) { m_TreeCtrl.DeleteItem( hItem ); return; } while( hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_NEXT ) ) if( m_TreeCtrl.GetItemText( hItem ) == text ) { m_TreeCtrl.DeleteItem( hItem ); return; } } }